home *** CD-ROM | disk | FTP | other *** search
/ Ham Radio 2000 #2 / Ham Radio 2000 - Volume 2.iso / HAMV2 / ANTENNA / YAGIU112 / NEW_LEN.C < prev    next >
C/C++ Source or Header  |  1995-08-20  |  1KB  |  48 lines

  1. #include <stdio.h>
  2. #include "yagi.h"
  3.  
  4. /* The function lew_length, computes the length of a dipole to have the same
  5. reactance as an old dipole */
  6.  
  7. double new_length(double old_l, double old_dia, double lambda, double new_dia)
  8. {
  9.     double old_r, old_x, r, x,l;
  10.     self(old_dia/2.0, old_l, lambda, &old_r, &old_x);
  11.     /* printf("old r=%lf old l=%lf old x=%lf\n",old_r,old_l,old_x); */
  12.     if(old_dia > new_dia)
  13.         l=0.50001*lambda;    
  14.     else
  15.         l=old_l;
  16.     do{ 
  17.         l-=0.1*lambda;
  18.         self(new_dia/2.0, l, lambda, &r, &x);
  19.     }while(x>old_x);
  20.     l+=0.1*lambda;
  21.     do{ 
  22.         l-=0.01*lambda;
  23.         self(new_dia/2.0, l, lambda, &r, &x);
  24.     }while(x>old_x);
  25.     l+=0.01*lambda;
  26.     do{ 
  27.         l-=0.001*lambda;
  28.         self(new_dia/2.0, l, lambda, &r, &x);
  29.     }while(x>old_x);
  30.     l+=0.001*lambda;
  31.     do{ 
  32.         l-=0.0001*lambda;
  33.         self(new_dia/2.0, l, lambda, &r, &x);
  34.     }while(x>old_x);
  35.     l+=0.0001*lambda;
  36.     do{ 
  37.         l-=0.00001*lambda;
  38.         self(new_dia/2.0, l, lambda, &r, &x);
  39.     }while(x>old_x);
  40.     l+=0.00001*lambda;
  41.     do{ 
  42.         l-=0.00001*lambda;
  43.         self(new_dia/2.0, l, lambda, &r, &x);
  44.     }while(x>old_x);
  45.     /* printf("new r=%lf new l=%lf new x=%lf\n",r,l,x); */
  46.     return(l);
  47. }
  48.